Atklājiet CSS @use spēku modularitātei, atkarību pārvaldībai un uzlabotai koda organizācijai. Apgūstiet labākās prakses, uzlabotas tehnikas un reālus pielietojumus.
CSS @use apguve: Mūsdienīga pieeja atkarību pārvaldībai
Pastāvīgi mainīgajā tīmekļa izstrādes vidē ir ļoti svarīgi uzturēt tīru, organizētu un mērogojamu CSS. Projektu sarežģītībai pieaugot, tradicionālās CSS atkarību pārvaldības metodes var kļūt apgrūtinošas un radīt konfliktus. Iepazīstieties ar @use — spēcīgu funkciju, kas ieviesta CSS moduļu 1. līmenī un piedāvā modernu risinājumu atkarību deklarēšanai un modularitātei jūsu stila lapās. Šis raksts sniedz visaptverošu ceļvedi, kā izprast un efektīvi izmantot @use, ļaujot jums veidot uzturējamākas un efektīvākas CSS arhitektūras.
Kas ir CSS @use?
@use ir CSS at-rule (direktīva), kas ļauj importēt un iekļaut CSS noteikumus, mainīgos, miksinus un funkcijas no citām stila lapām. Atšķirībā no tradicionālā @import, @use izveido nosaukumvietu (namespace) importētajiem stiliem, novēršot nosaukumu sadursmes un veicinot labāku koda organizāciju. Tas arī nodrošina lielāku kontroli pār to, kas tiek atklāts no importētā moduļa.
Uztveriet @use kā veidu, kā izveidot atkārtoti lietojamus CSS komponentus, katru iekapsulētu savā modulī. Šī modulārā pieeja vienkāršo izstrādi, uzlabo uzturējamību un samazina negaidītu stilu konfliktu risku.
Kāpēc lietot @use, nevis @import?
Lai gan @import gadiem ilgi ir bijis CSS pamatā, tam ir vairāki ierobežojumi, kurus @use atrisina:
- Globālā darbības joma:
@importievieto stilus tieši globālajā darbības jomā, palielinot nosaukumu sadursmju risku un apgrūtinot stilu izcelsmes izsekošanu. - Veiktspējas problēmas:
@importvar negatīvi ietekmēt veiktspēju, jo tas liek pārlūkprogrammai secīgi lejupielādēt vairākas stila lapas. - Nosaukumvietu trūkums:
@importnepiedāvā iebūvētu mehānismu nosaukumvietām, kas rada potenciālus konfliktus, izmantojot vairākas bibliotēkas vai ietvarus.
@use pārvar šos ierobežojumus, veicot šādas darbības:
- Nosaukumvietu izveide:
@useiekapsulē importētos stilus nosaukumvietā, novēršot nosaukumu sadursmes un uzlabojot koda skaidrību. - Uzlabota veiktspēja: Lai gan veiktspējas ieguvumi nav tik dramatiski kā ar citām modernām CSS tehnikām (piemēram, HTTP/2 push),
@useveicina labāku organizāciju, kas netieši noved pie efektīvākām stila lapām. - Kontrole pār atklāšanu:
@useļauj selektīvi atklāt mainīgos, miksinus un funkcijas, nodrošinot smalkāku kontroli pār to, kas ir pieejams citiem moduļiem.
@use pamata sintakse
@use direktīvas pamata sintakse ir vienkārša:
@use 'ceļš/uz/stila-lapu';
Šī rinda importē stila lapu, kas atrodas ceļš/uz/stila-lapu, un izveido nosaukumvietu, pamatojoties uz faila nosaukumu (bez paplašinājuma). Piemēram, ja stila lapas nosaukums ir _variables.scss, nosaukumvieta būs variables.
Lai piekļūtu mainīgajiem, miksiniem vai funkcijām no importētā moduļa, jūs izmantojat nosaukumvietu, kam seko punkts un elementa nosaukums:
.element {
color: variables.$primary-color;
@include variables.responsive(tablet) {
font-size: 1.2rem;
}
}
Nosaukumvietas un aizstājvārdi (Aliasing)
Viena no galvenajām @use priekšrocībām ir spēja izveidot nosaukumvietas. Pēc noklusējuma nosaukumvieta tiek atvasināta no faila nosaukuma. Tomēr jūs varat pielāgot nosaukumvietu, izmantojot atslēgvārdu as:
@use 'ceļš/uz/stila-lapu' as pielāgota-nosaukumvieta;
Tagad jūs varat piekļūt importētajiem elementiem, izmantojot pielāgota-nosaukumvieta:
.element {
color: custom-namespace.$primary-color;
}
Jūs varat arī izmantot as *, lai importētu visus elementus bez nosaukumvietas, efektīvi atdarinot @import uzvedību. Tomēr tas parasti nav ieteicams, jo tas noliedz nosaukumvietu priekšrocības un var izraisīt nosaukumu sadursmes.
@use 'ceļš/uz/stila-lapu' as *; // Nav ieteicams
Konfigurācija ar @use
@use ļauj konfigurēt mainīgos importētajā modulī, izmantojot atslēgvārdu with. Tas ir īpaši noderīgi, lai izveidotu pielāgojamas tēmas vai komponentus.
Vispirms definējiet mainīgos importētajā modulī ar !default karodziņu:
/* _variables.scss */
$primary-color: #007bff !default;
$secondary-color: #6c757d !default;
Pēc tam konfigurējiet šos mainīgos, izmantojot moduli:
@use 'variables' with (
$primary-color: #ff0000,
$secondary-color: #00ff00
);
Tagad variables modulis izmantos #ff0000 kā primāro krāsu un #00ff00 kā sekundāro krāsu. Tas ļauj viegli pielāgot jūsu komponentu izskatu, nemainot sākotnējo moduli.
Uzlabotas tehnikas ar @use
Nosacījuma importēšana
Lai gan @use tieši neatbalsta nosacījuma importēšanu, pamatojoties uz multivides vaicājumiem vai citiem nosacījumiem, jūs varat sasniegt līdzīgu funkcionalitāti, izmantojot CSS mainīgos un JavaScript. Piemēram, jūs varat definēt CSS mainīgo, kas norāda pašreizējo tēmu vai ierīces veidu, un pēc tam izmantot JavaScript, lai dinamiski ielādētu atbilstošo stila lapu, izmantojot @use.
Miksini un funkcijas
@use ir īpaši spēcīgs, ja to apvieno ar miksiniem un funkcijām. Jūs varat izveidot atkārtoti lietojamus miksinus un funkcijas atsevišķos moduļos un pēc tam importēt tos savos komponentos, izmantojot @use. Tas veicina koda atkārtotu izmantošanu un samazina dublēšanos.
Piemēram, jūs varat izveidot miksinu responsīvai tipogrāfijai:
/* _typography.scss */
@mixin responsive-font-size($min-size, $max-size, $min-width, $max-width) {
font-size: calc(
#{$min-size} + (#{$max-size} - #{$min-size}) * ((100vw - #{$min-width}) / (#{$max-width} - #{$min-width}))
);
}
Pēc tam importējiet šo miksinu savā komponentā un izmantojiet to:
/* _component.scss */
@use 'typography';
.title {
@include typography.responsive-font-size(1.2rem, 2.4rem, 768px, 1200px);
}
CSS mainīgie un tēmas
@use nevainojami darbojas ar CSS mainīgajiem, ļaujot jums izveidot pielāgojamas tēmas un komponentus. Jūs varat definēt CSS mainīgos atsevišķos moduļos un pēc tam importēt tos savos komponentos, izmantojot @use. Tas ļauj viegli pārslēgties starp dažādām tēmām vai pielāgot jūsu komponentu izskatu, pamatojoties uz lietotāja preferencēm.
Labākās prakses @use izmantošanai
- Organizējiet savas stila lapas: Sadaliet savu CSS loģiskos moduļos, pamatojoties uz funkcionalitāti vai komponentu veidu.
- Izmantojiet jēgpilnas nosaukumvietas: Izvēlieties nosaukumvietas, kas precīzi atspoguļo moduļa mērķi.
- Konfigurējiet mainīgos ar
with: Izmantojiet atslēgvārduwith, lai konfigurētu mainīgos un izveidotu pielāgojamus komponentus. - Izvairieties no
as *: Izvairieties noas *izmantošanas, jo tas noliedz nosaukumvietu priekšrocības un var izraisīt nosaukumu sadursmes. - Dokumentējiet savus moduļus: Skaidri dokumentējiet savus moduļus, paskaidrojot katra mainīgā, miksina un funkcijas mērķi.
- Pārbaudiet savu kodu: Rūpīgi pārbaudiet savu kodu, lai nodrošinātu, ka jūsu moduļi darbojas, kā paredzēts, un ka nav nosaukumu sadursmju.
Reāli piemēri
1. piemērs: Globāla stila lapa
Globāla stila lapa (piemēram, _global.scss) var saturēt globālos mainīgos un stilus, kas tiek izmantoti visā vietnē. Tie var ietvert vispārējo krāsu shēmu, fontus, atstarpju noteikumus utt.
/* _global.scss */
$primary-color: #29ABE2;
$secondary-color: #F2F2F2;
$font-family: 'Arial', sans-serif;
body {
font-family: $font-family;
background-color: $secondary-color;
color: $primary-color;
}
Pēc tam izmantojiet to citās stila lapās šādi:
@use 'global';
.header {
background-color: global.$primary-color;
color: white;
}
2. piemērs: Pogu komponenti
Izveidojiet īpašu moduli pogu komponentu stilam (piemēram, _buttons.scss) ar variācijām, piemēram, primārajām un sekundārajām pogām.
/* _buttons.scss */
$base-button-padding: 10px 20px;
$base-button-font-size: 16px;
@mixin base-button-style {
padding: $base-button-padding;
font-size: $base-button-font-size;
border: none;
cursor: pointer;
}
.button-primary {
@include base-button-style;
background-color: blue;
color: white;
}
.button-secondary {
@include base-button-style;
background-color: gray;
color: white;
}
Izmantojiet šo pogu moduli citās stila lapās:
@use 'buttons';
.submit-button {
@extend .buttons.button-primary; /* Paplašinot bāzes klases stilus */
margin-top: 10px;
}
3. piemērs: Formu stils
Izveidojiet formai specifisku stila moduli (piemēram, _forms.scss).
/* _forms.scss */
$input-border-color: #ccc;
$input-focus-color: #66afe9;
input[type="text"], input[type="email"], textarea {
padding: 8px;
margin-bottom: 10px;
border: 1px solid $input-border-color;
border-radius: 4px;
&:focus {
border-color: $input-focus-color;
outline: none;
}
}
Pēc tam izmantojiet to:
@use 'forms';
.contact-form {
width: 50%;
margin: 0 auto;
input[type="submit"] {
background-color: green;
color: white;
padding: 10px 15px;
border: none;
border-radius: 4px;
cursor: pointer;
}
}
Migrācijas stratēģija no @import uz @use
Pāreja no @import uz @use esošā projektā var būt pakāpenisks process. Šeit ir ieteicamā migrācijas stratēģija:
- Identificējiet globālos stilus: Sāciet, identificējot globālās stila lapas, kas tiek importētas vairākās vietās. Šie ir labi kandidāti sākotnējai migrācijai.
- Aizstājiet
@importar@use: Aizstājiet@importapgalvojumus ar@use, izveidojot nosaukumvietas importētajiem stiliem. - Atjauniniet atsauces: Atjauniniet visas atsauces uz importētajiem stiliem, lai izmantotu jaunās nosaukumvietas.
- Risiniet nosaukumu sadursmes: Atrisiniet visas nosaukumu sadursmes, kas rodas, ieviešot nosaukumvietas.
- Rūpīgi pārbaudiet: Rūpīgi pārbaudiet savu kodu, lai nodrošinātu, ka migrācija nav radījusi nekādas regresijas.
- Pakāpeniski refaktorējiet: Turpiniet refaktorēt savu kodu, pakāpeniski migrējot vairāk stila lapu uz
@useizmantošanu.
CSS @forward: Moduļu atklāšana
Līdzās @use, @forward ir vēl viens spēcīgs rīks CSS atkarību pārvaldībai. @forward direktīva ļauj atklāt mainīgos, miksinus un funkcijas no citiem moduļiem, tieši neimportējot tos pašreizējā modulī. Tas ir noderīgi, lai izveidotu publisku API jūsu moduļiem.
Piemēram, jūs varat izveidot index.scss failu, kas pārsūta visus mainīgos, miksinus un funkcijas no citiem moduļiem:
/* index.scss */
@forward 'variables';
@forward 'mixins';
Tagad jūs varat importēt index.scss failu savos komponentos un piekļūt visiem mainīgajiem, miksiniem un funkcijām no pārsūtītajiem moduļiem:
@use 'index';
.element {
color: index.$primary-color;
@include index.responsive(tablet) {
font-size: 1.2rem;
}
}
@forward var izmantot arī ar atslēgvārdiem hide un show, lai selektīvi atklātu elementus no pārsūtītajiem moduļiem:
/* index.scss */
@forward 'variables' hide $private-variable;
@forward 'mixins' show responsive;
Šajā piemērā $private-variable netiks atklāts no variables moduļa, un no mixins moduļa tiks atklāts tikai responsive miksins.
Pārlūkprogrammu atbalsts un polifili
@use tiek atbalstīts modernās pārlūkprogrammās, kas atbalsta CSS Modules Level 1. Tomēr vecākas pārlūkprogrammas to var neatbalstīt. Lai nodrošinātu saderību ar vecākām pārlūkprogrammām, varat izmantot CSS priekšprocesoru, piemēram, Sass vai Less, kas automātiski pārveido @use apgalvojumus saderīgā CSS kodā.
CSS atkarību pārvaldības nākotne
@use ir nozīmīgs solis uz priekšu CSS atkarību pārvaldībā. Nodrošinot nosaukumvietas, kontroli pār atklāšanu un uzlabotas konfigurācijas iespējas, @use dod izstrādātājiem iespēju veidot modulārākas, uzturējamākas un mērogojamākas CSS arhitektūras. CSS turpinot attīstīties, mēs varam sagaidīt turpmākus uzlabojumus un inovācijas atkarību pārvaldībā, padarot robustu un efektīvu tīmekļa lietojumprogrammu izveidi vieglāku nekā jebkad agrāk.
Globālie apsvērumi un pieejamība
Ieviešot @use (un CSS kopumā) globālā kontekstā, ir būtiski ņemt vērā pieejamību un internacionalizāciju (i18n) un lokalizāciju (l10n). Šeit ir daži norādījumi:
- Valodai specifiski stili: Izmantojiet CSS mainīgos, lai pārvaldītu valodai specifiskus stilus, piemēram, fontu saimes un fontu izmērus. Tas ļauj viegli pielāgot stilus dažādām valodām un skriptiem. Apsveriet loģisko īpašību un vērtību izmantošanu (piemēram,
margin-inline-start, nevismargin-left), lai labāk atbalstītu no labās uz kreiso pusi rakstāmās valodas. - Pieejamība: Nodrošiniet, ka jūsu CSS stili ir pieejami lietotājiem ar invaliditāti. Izmantojiet semantiskus HTML elementus, nodrošiniet pietiekamu krāsu kontrastu un nepaļaujieties tikai uz krāsu, lai sniegtu informāciju. Pārbaudiet savu vietni ar palīgtehnoloģijām, piemēram, ekrāna lasītājiem, lai identificētu un novērstu jebkādas pieejamības problēmas.
- Kultūras apsvērumi: Projektējot savu vietni, ņemiet vērā kultūras atšķirības. Izvairieties no attēlu, krāsu vai simbolu izmantošanas, kas noteiktās kultūrās var būt aizskaroši vai nepiemēroti.
- Responsīvs dizains globālai auditorijai: Nodrošiniet, ka jūsu vietne ir responsīva un pielāgojas dažādiem ekrāna izmēriem un ierīcēm. Apsveriet skata loga vienību (vw, vh, vmin, vmax) izmantošanu elastīgiem izkārtojumiem, kas mērogojas proporcionāli ekrāna izmēram.
Noslēgums
@use ir spēcīgs rīks CSS atkarību pārvaldībai un modulāru, uzturējamu un mērogojamu CSS arhitektūru veidošanai. Izprotot @use principus un ievērojot labākās prakses, jūs varat ievērojami uzlabot sava CSS koda organizāciju un efektivitāti. Neatkarīgi no tā, vai strādājat pie neliela personīgā projekta vai lielas uzņēmuma lietojumprogrammas, @use var palīdzēt jums izveidot labāku CSS un nodrošināt labāku lietotāja pieredzi.